Dynamic power management

ABSTRACT

In one embodiment, a method includes: obtaining a power loss value for a cable that couples a device to a power source, where the power loss value is indicative of an amount of power lost through the cable during power transmission from the power source to the device; and determining, based at least in part on the power loss value for the cable, a power budget value indicative of an amount of power received by the device from the power source.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. patent application Ser. No.14/736,061, filed on Jun. 10, 2015, which is hereby incorporated byreference in its entirety.

TECHNICAL FIELD

The present disclosure relates generally to power management andtransmission, and in particular, to systems, methods and apparatusesenabling dynamic power management of an operating device.

BACKGROUND

The ongoing development, maintenance, and expansion of data networksoften involves incorporating additional functionality into and enablinggreater connectivity with previously deployed equipment, in addition todeploying new networking equipment. The transmission media by whichdevices are connected may allow for the communication of data betweendevices and, in some instances, also allow for the transmission of powerbetween devices. The simplification of using the same cable (andinput/output ports) for transmission of both data and power betweendevices may enhance the user experience.

Powering devices via a transmission media rather than an independentpower source presents a number of challenges. For example, the amount ofpower received via a transmission media which also carries data may besignificantly less than the amount of power that may be drawn from adedicated power source such as a wall outlet. Thus, a device that drawspower via such a transmission medium may have a reduced power budget andmay not be able to perform the same number of functions as anindependently powered device within that power budget or may not be ableto provide the same level of performance of performed functions that anindependently powered device may provide.

BRIEF DESCRIPTION OF THE DRAWINGS

So that the present disclosure can be understood by those of ordinaryskill in the art, a more detailed description may be had by reference toaspects of some illustrative implementations, some of which are shown inthe accompanying drawings.

FIG. 1 is a block diagram of a data network in accordance with someimplementations.

FIG. 2A is a block diagram of a device in accordance with someimplementations.

FIG. 2B is a block diagram of a power source in accordance with someimplementations.

FIG. 3 is a flowchart representation of a method selectively enablingand/or disabling power consuming functions of a device in accordancewith some implementations.

FIG. 4 is a flowchart representation of a method of managing powerconsumption of a device in accordance with some implementations.

FIG. 5 is a flowchart representation of a method of selecting powerconsuming functions to enable or disable in accordance with someimplementations.

FIG. 6 is a flowchart representation of a method of determining a powerbudget in accordance with some implementations.

FIG. 7 is a flowchart representation of a method of determining a powerbudget in accordance with some implementations.

FIG. 8 is a block diagram of a power control module in accordance withsome implementations.

FIG. 9 is a block diagram of a computing device in accordance with someimplementations.

FIG. 10 is a block diagram of a computing device in accordance with someimplementations.

In accordance with common practice various features shown in thedrawings may not be drawn to scale, as the dimensions of variousfeatures may be arbitrarily expanded or reduced for clarity. Moreover,the drawings may not depict all of the aspects and/or variants of agiven system, method or apparatus admitted by the specification.Finally, like reference numerals are used to denote like featuresthroughout the figures.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Numerous details are described herein in order to provide a thoroughunderstanding of the illustrative implementations shown in theaccompanying drawings. However, the accompanying drawings merely showsome example aspects of the present disclosure and are therefore not tobe considered limiting. Those of ordinary skill in the art willappreciate from the present disclosure that other effective aspectsand/or variants do not include all of the specific details of theexample implementations described herein. While pertinent features areshown and described, those of ordinary skill in the art will appreciatefrom the present disclosure that various other features, includingwell-known systems, methods, components, devices, and circuits, have notbeen illustrated or described in exhaustive detail for the sake ofbrevity and so as not to obscure more pertinent aspects of the exampleimplementations disclosed herein.

Overview

Various implementations disclosed herein include apparatuses, systems,and methods for dynamically managing power consumed by a device. Forexample, in some implementations, a method includes: obtaining, at adevice, a power loss value for a cable that couples the device to apower source, where the power loss value is indicative of an amount ofpower lost through the cable during power transmission from the powersource to the device; and determining, based at least in part on thepower loss value for the cable, a power budget value indicative of anamount of power received by the device from the power source. Forexample, in other implementations, a method includes: obtaining, at apower source, a power loss value for a cable that couples the powersource to a device, where the power loss value is indicative of anamount of power lost through the cable during power transmission fromthe power source to the device; determining, based at least in part onthe power loss value for the cable, a power budget value indicative ofan amount of power delivered to the device by the power source; andproviding an indication of the power budget value to the device.

Example Embodiments

When operating a device, numerous factors determine the functions orfeatures that may be enabled before the amount of power that would beconsumed by the device is greater than that available, risking failureof the device. For example, workload, manufacturing versions,environmental factors, mounting methods, and usage can affect the powerconsumed by a device with a particular set of functions enabled. Productdevelopers may design a device with reduced performance and/orfunctionality to compensate for worst-case scenarios and ensure thatthere is a large enough safety margin between power available and powerconsumed to avoid failure of the device.

When power is received via a transmission media which also carries data,the amount of power available to a device may be significantly less thanthe amount of power that may be drawn from a dedicated power source. Forexample, a wireless access point deriving power via an Ethernet cableusing the IEEE (Institute of Electrical and Electronics Engineers)802.3af standard may, in order to fit within the power budget, have asignificantly reduced feature set as compared to a wireless access pointderiving power from another source. Similarly, products withmulti-gigabit Ethernet, multiple radios, or second-generation IEEE802.11ac radios may have difficulty fitting under the larger powerbudget of the IEEE 802.3at standard.

In some implementations, power consumption is monitored (or estimated)and controlled to safely reduce the difference between power availableand power consumed by selectively enabling or disabling functions duringruntime. For example, in some implementations, a power control moduledetermines the amount of power available to a device and the amount ofpower consumed by the device during operation of the device. Based onthe difference between these amounts, the power control module mayselect one or more functions of the device and enable (or disable) thefunctions. In some implementations, the amount of power available to thedevice is based at least in part on a power standard in accordance withwhich the device sources power and also a power loss value for a cablethat couples the device to the power source.

Determining the amount of power consumed by the device and determiningwhich functions of the device to enable or disable may be based oninformation from a number of different sources. For example, the powercontrol module may base its determinations on inputs from a memorystoring manufacturing or empirical test data, hardware sensors of thedevice, a module producing predictive information about thecomputational workload of a user of the device, the Internet, and/orclosed databases of network and device statistics such as that of acloud-based controller. These inputs may be used to intelligently removethe safety margin built into the power and thermal budget of a device,allowing it to reach higher levels of performance than would otherwisebe possible. In particular, using information from hardware sensors ofthe device in parallel with information from a cloud-based controllerarchitecture may make it possible to deliver an enhanced user.

FIG. 1 is a block diagram of a data network 100 in accordance with someimplementations. The data network 100 includes a switching hub 111 thatcouples a number of devices 121-123 to a network 101. The network 101may include any public or private LAN (local area network) and/or WAN(wide area network), such as an intranet, an extranet, a virtual privatenetwork, and/or portions of the Internet. In some implementations, oneor more of the devices 121-123 are physical devices including hardwareand software for performing one or more functions. Example physicaldevices include, without limitation, network routers, wireless accesspoints, IP (internet protocol) cameras, VoIP (Voice-over-IP) phones,intercoms and public address systems, clocks, sensors, accesscontrollers (e.g., keycard readers), lighting controllers, securitysystems, building management systems, or the like. In someimplementations, one or more of the devices 121-123 may be virtualdevices that consume power through the use of underlying hardware.

The switching hub 111 (which may also be referred to as a networkswitch, a bridging hub, or a MAC [media access control] bridge) receivesand transmits data between the network 101 and the devices 121-123. Insome implementations, the switching hub 111 manages the flow of data ofthe data network 100 by transmitting messages received from the network101 to the devices 121-123 for which the messages are intended. In someimplementations, each of the devices 121-123 coupled to the switchinghub 111 is identified by a MAC address.

The switching hub 111 is communicatively coupled to each of the devices121-123 via respective transmission media 131-133, which may be wired orwireless. In some implementations, the switching hub 111, in addition toreceiving and transmitting data via the transmission media 131-133,provides power to the devices 121-123 via the transmission media131-133. For example, in some implementations, the switching hub 111 iscoupled to the devices 121-123 via an Ethernet cable. In someimplementations, the switching hub 111 provides power to the devices121-123 on unused conductors of the cable or by applying a common-modevoltage to each pair of conductors of the cable.

In some implementations, the switching hub 111 provides power to thedevices 121-123 via the Ethernet cable according to aPower-over-Ethernet (PoE) standard. In some implementations, theswitching hub 111 provides power to the devices 121-123 according to theIEEE 802.3af standard. For example, in some implementations, theswitching hub 111 outputs 15.4 W of power to each of the devices121-123. Due to power loss caused by the resistance of the Ethernetcable, each of the devices 121-123 may receive less than 15.4 W ofpower. For example, each of the devices 121-123 may receive as little as12.95 W of power. In some implementations, the switching hub 111provides power to the devices 121-123 according to other PoE standardssuch as IEEE 802.3at or IEEE 802.3bt. In some implementations, theswitching hub 111 provides power to the devices 121-123 via other typesof transmission media 131-133, such as a USB (Universal Serial Bus)cable, or an IEEE 1394 (FIREWIRE) cable.

FIG. 2A is a block diagram of a device 221 coupled to a power source 211in accordance with some implementations. The device 221 may correspondto any of the devices 121-123 of FIG. 1, and the power source 211 maycorrespond to the switching hub 111 of FIG. 1.

The device 221 includes a port 250 for receiving power from the powersource 211 via a transmission medium 231. The transmission media 231 maybe a wired or wireless transmission medium. In some implementations, thetransmission medium 231, in addition to providing power to the device221, carries data from and to the device 221. Similarly, in someimplementations, the port 250, in addition to receiving power from thepower source 211, receives and transmits data. Although the power source211 is shown as external to the device 221 in FIG. 2A, it is to beappreciated that aspects of the disclosure may be used inimplementations in which the device 221 includes an optional internalpower supply 212 such as one or more batteries. In some implementations,the transmission medium 231 is, for example, an Ethernet cable and theport 250 is an Ethernet port. In some implementations, the port 250 is aUSB port or an IEEE 1394 (FIREWIRE) port for receiving a USB cable or anIEEE 1394 (FIREWIRE) cable, respectively.

The device 221 includes a power control module 240 that selectivelyenables and disables power consuming functions 270 of the device. Thepower consuming functions 270 may include hardware 271 and/or executablecode 272. For example, in some implementations, the hardware 271includes backup 2.4 GHz or 5.0 GHz radios, interference scanning radios,BLUETOOTH/BLUETOOTH Low Energy radios, or additional data ports (e.g.,USB or Ethernet ports). In some implementations, the executable code 272includes software for performing one or more functions such asprocessing client traffic, security functionality, or spectral analysis.

In some implementations, the power consuming functions 270 includeenhanced versions of other power consuming functions 270, particularlyof core power consuming functions 270. For example, in someimplementations, the power consuming functions 270 include increaseddata throughput, additional RF (radio frequency) transmit/receivechains, modulation/coding schemes, transmit power, high bandwidthEthernet modes, increased CPU (central processing unit) frequency,increased memory frequency, increased memory refresh rates, an increasednumber of active memory banks, and/or increased system bus frequencies.Thus, in some implementations, enabling (or disabling) a power consumingfunction 270 includes increasing or decreasing a hardware or softwareparameter such as CPU frequency.

In some implementations, the power control module 240 selectivelyenables and disables the power consuming functions 270 based on anamount of power received from the power source 211 and/or the amount ofpower consumed by the device 221. For example, according to the IEEE802.3af standard, the device 221 may expect to receive 12.95 W of powervia an Ethernet cable. In reality, the device 211 may be able to drawmore power via the cable, particularly if the cable is short or of highquality. For example, the device 211 may be able to draw up to 13.87 Wfrom a Category 5 cable, a 7.1% increase in the amount of power drawncompared to a Category 3 cable. In response to obtaining an indicationthat the cable is lower loss than typical and consequently the amount ofpower available is greater than 12.95 W, the power control module 240may enable additional power consuming functions 270. Similarly, thedevice 221 may be expected (or designed) to consume 12.5 W of powerduring operation with a particular set of power consuming functions 270enabled. In response to determining that the device 221, in operationwith the set of power consuming functions 270 enabled, is consuming lessthan 12.5 W of power, the power control module 240 may enable additionalpower consuming functions 270.

In some implementations, the power control module 240 determines theamount of power available to the device 221 from the power source 211 ina number of ways. In some implementations, the power control module 240determines the amount of power available to the device 221 based on asignal obtained from the power source 211 via the port 250. In someimplementations, the signal encodes a value indicative of an amount ofpower available to the device (e.g., in watts). In some implementations,the signal encodes a flag indicative of a power standard (e.g., IEEE802.3af or IEEE 802.3at) employed by the power source 211 in deliveringpower to the device 221.

In some implementations, the power control module 240 includes a cablediagnostic sub-module 245 (e.g., including a power sensor) configured todetermine a power loss value for a cable or similar transmission medium(e.g., the transmission medium 231). In some implementations, thediagnostic sub-module 245 is configured to perform a diagnostic testthat identifies one or more characteristics of the cable including,without limitation, a length of the cable, a resistance value of thecable, an insertion loss value of the cable, and a return loss value ofthe cable. In some implementations, the power loss value is a functionof the one or more characteristics of the cable. In someimplementations, the power control module 240 determines an adjustedamount of power available to the device 221 (i.e., the amount of powerreceived by the device 221 from the power source 211) based on thesignal from the power source 211 and the power loss value determined bythe cable diagnostic sub-module 245.

In some implementations, the power control module 240 also determinesthe amount of power consumed by the device 221 in a number of ways. Insome implementations, the power control module 240 determines the amountof power consumed by the device 221 using data indicative of actualpower consumption (by the device 221 or similar devices), rather thanthe amount of power the device 221 was designed to consume. In someimplementations, the device 221 includes one or more sensors 260 whichgenerate data that may be used by the power control module 240 todetermine the amount of power consumed by the device 221. Although thesensors 260 are illustrated separately from the power consumingfunctions 270 in FIG. 2A, it is to be appreciated that the sensors 260and/or their operation may themselves be power consuming functions.

In some implementations, the one or more sensors 260 include an optionalpower consumption monitor 261 that generates data, such as a monitoredvalue, indicative of the amount of power consumed by the device 221. Insome implementations, the power consumption monitor 261 includes, forexample, a current drain meter. Although the power control module 240may determine the amount of power consumed by the device 221 based oninformation from the power consumption monitor 261 (or multiple powerconsumption monitors associated with various portions of the device221), the power control module 240 may determine the amount of powerconsumed by the device 221 by less direct methods.

In some implementations, the power control module 240 determines theamount of power consumed by the device 221 by accessing powerconsumption data 241 stored on the device 221 indicative of expectedpower consumed by the device 221 in various configurations (e.g., byvarious power consuming functions 270 or having various sets of powerconsuming functions 270 enabled or disabled). In some implementations,the power consumption data 241 includes manufacturing test data gatheredwhen the device 221 (or a component thereof) was built. In someimplementations, the power consumption data 241 includes empirical testdata gathered during operation of the device 221.

In some implementations, the power control module 240 determines theamount of power consumed by the device 221 based on information receivedvia the port 250 such as information received from the Internet. In someimplementations, the power control module 240 receives information froma database of live, real-time information on the status and history ofdevices in operation such as a database of a cloud-based controllerarchitecture. For example, the power control module 240 receivesinformation indicating that a particular power consuming functiondesigned to consume approximately 4.0 W typically consumes between 2.1 Wand 2.4 W of power. Accordingly, rather than determining the amount ofpower consumed by the device 221 using the 4.0 W metric for theparticular power consuming function, the power control module 240determines the amount of power consumed by the device 221 assuming thatthe power consuming function consumes 2.4 W (or, for additional safetyagainst failure, 2.6 W or 3.0 W).

Additional information received via the port 250 that may be used by thepower control module 240 to determine the amount of power consumed bythe device 221 may include, without limitation, information aboutspecial events (e.g., software patches or releases) that may signalcomputer demand on a piece of hardware, weather forecasts or patternsthat may impact the environmental conditions of a piece of hardware andtherefore impact its energy budget for computational tasks, upcomingtradeshows/conferences, car traffic or pedestrian data that may allowthe prediction of a high concentration of users of the device 221, videostreaming statistics, and/or the like.

Thus, as described above, in some implementations, the power controlmodule 240 determines an amount of power available to the device 221 andan amount of power consumed by the device 221. Based on thisinformation, the power control module 240 selectively enables ordisables one or more power consuming functions 270 of the device. Forexample, if the difference between the amount of power available and theamount of power consumed is large, the power control module 240 mayenable an additional power consuming function 270 to consume this unusedavailable power. As another example, if the difference between theamount of power available and the amount of power consumed is small, thepower control module 240 may disable a power consuming function 270 toprovide a safety margin and avoid failure of the device 221 ordegradation of performance of other power consuming functions 270,including, but not limited to, core features of the device 221. Thepower control module 240 may select which power consuming function 270to enable or disable based on a number of factors as described below.

In some implementations, in order to enable a power consuming function270 including hardware 271, the power control module 240 enables powerreceived via the port 250 to activate the hardware 271. In someimplementations, the power control module 240 actively routes power tothe hardware 271, transmits a signal to the hardware 271 to activate it,or transmits a signal to other hardware that enables power to activatethe hardware 271. In some implementations, in order to enable a powerconsuming function 270 including executable code 272, the power controlmodule 240 instructs a processor of the device 221 (of which the powercontrol module 240 may be a part or separate) to execute the executablecode 272.

In some implementations, the power control module 240 continuouslymonitors and controls the amount of power consumed by the device 221 andrepeatedly enables or disables power consuming functions 270. Forexample, in some implementations, the power control module 240determines an updated amount of power consumed by the device andselectively enables or disables one or more power consuming functions270 based on the amount of power available (which may also be updated)and the updated amount of power consumed by the device 221.

FIG. 2B is a block diagram of the power source 211 coupled to one ormore devices 221-1, . . . , 221-N in accordance with someimplementations. The power source 211 may correspond to the switchinghub 111 of FIG. 1, and the one or more devices 221-1, . . . , 221-N maycorrespond to any of the devices 121-123 of FIG. 1.

The one or more devices 221-1, . . . , 221-N are coupled to a port bank284 of the power source 211 via corresponding transmission media 231-1,. . . , 231-N. For example, the port bank 284 includes 24, 48, or anarbitrary number of ports. In some implementations, the power source 211includes a power supply 282 configured to deliver power to thecomponents of the power source 211 and the one or more devices 221-1, .. . , 221-N. Additionally, in some implementations, the power source 211includes networking module 286 configured to route packet traffic to andfrom the one or more devices 221-1, . . . , 221-N.

The power source 211 also includes a power supply module 290 configuredto control the delivery of power from the power supply 282 to the one ormore devices 221-1, . . . , 221-N. In some implementations, the powersupply module 290 includes a power standard module 292, a cablediagnostic sub-module 294, and a communication sub-module 296.

In some implementations, the power standard sub-module 292 is configuredto determine a power standard by which the devices 221-1, . . . , 221-Nare able to source power via a transmission medium (e.g., thetransmission medium 231). For example, the power standard sub-module 292detects that a respective device of the one or more devices 221-1, . . ., 221-N is coupled to one of the ports of the port bank 284 via anEthernet cable and sends a predefined voltage pulse to determine thepower standard of the respective device. If the respective device isconfigured to source power in accordance with a PoE standard, therespective device includes a signature resistor. The signature resistorand the predefined voltage pulse enables the power source 211 to measurea return current value which enables the power source 211 to determinethe power standard by which the respective device is able to sourcepower. For example, a respective device that is configured to sourcepower according to IEEE 802.3af has a 1 kΩ signature resistor. In thisexample, the power standard sub-module 292 of the power source measuresa resulting current of 100 mA, assuming a predefined 10 V pulse.Continuing with this example, the power standard sub-module 292determines, based on a look-up-table or the like, that the respectivedevice is able to sink 15.4 W of power according to IEEE 802.3af.

In some implementations, the cable diagnostic sub-module 294 isconfigured to determine a power loss value for a cable (e.g., thetransmission medium 231). In some implementations, the cable diagnosticsub-module 294 is configured to perform a diagnostic test thatidentifies one or more characteristics of the cable including, withoutlimitation, a length of the cable, a resistance value of the cable, aninsertion loss value of the cable, and a return loss value of the cable.In some implementations, the power loss value is a function of the oneor more characteristics of the cable. In some implementations, thepredefined voltage pulse sent by the power standard sub-module 292 todetermine the power standard of the respective device is also used toperform the cable diagnostic. In some implementations, a secondpredefined voltage pulse is sent by the power standard sub-module 292 toperform the cable diagnostic.

In some implementations, the communication sub-module 296 is configuredto provide an indication to the respective device of the devices 221-1,. . . , 221-N of the power available from a power source 211. In someimplementations, the indication is a signal that encodes one or more ofa power budget value indicative of an amount of power (e.g., in watts)available to the respective device, the power standard of the device,and the power loss value of the cable that couples the respective deviceto the power source 211. In other implementations, the communicationsub-module 296 is configured to set a register with a value indicativeof power available from the power source 211 which can be read by therespective device of the devices 221-1, . . . , 221-N. In someimplementations, the register value encodes one or more of a powerbudget value indicative of an amount of power (e.g., in watts) availableto the respective device, the power standard of the device, and thepower loss value of the cable that couples the respective device to thepower source 211.

FIG. 3 is a flowchart representation of a method 300 of selectivelyenabling and/or disabling power consuming functions in accordance withsome implementations. In some implementations, the method 300 isperformed by a power control module of a device such as the powercontrol module 240 of FIG. 2A. In some implementations, the method 300is performed by processing logic, including a suitable combination ofhardware, firmware, and software. In some implementations, the method300 is performed by a processor executing encoded instructions stored ina non-transitory computer-readable medium (e.g., a memory). Briefly, themethod 300 includes determining values indicative of power available toa device and power consumed by the device during operation, andselectively enabling and/or disabling one or more functions or featuresof the device based on the determined values.

The method 300 begins, at block 310, with the power control moduledetermining a first value indicative of power available to a device froma power source. In some implementations, the first value is an analogvalue that indicates the power available in watts or any other unit. Insome implementations, the first value is a discrete value (one of aplurality of possible values), such as ‘0’ if the amount of poweravailable is a low amount and ‘1’ if the amount of power is a highamount. In some implementations, the power source delivers power to thedevice via an Ethernet cable.

In some implementations, determining the first value includes receivinga signal from the power source indicative of an amount of poweravailable to the device. For example, in some implementations, the powercontrol module receives a signal encoding a value indicative of anamount of power (e.g., in watts) available to the device and the powercontrol module determines the first value based on the received value.For example, the first value may be the received value or the receivedvalue less a safety margin.

In some implementations, determining the first value includes receivinga signal from the power source indicative of a power standard employedby the power source in delivering power to the device. For example, insome implementations, the power control module receives a signalencoding a flag indicating that IEEE 802.3af or IEEE 802.3at is beingused. As an example, the power control module may determine the firstvalue as 12.95 W if the flag indicates that IEEE 802.3af is being used.

At block 320, the power control module determines a second valueindicative of the power consumed by the device. In some implementations,the second value is indicative of the power being currently consumed bythe device during operation of the device. The second value (like thefirst value) may be an analog value or a discrete value. In someimplementations, determining the second value includes receiving datafrom a power consumption monitor of the device and determining thesecond value based on the received data. In some implementations,determining the second value comprises receiving data from one or moreenvironmental sensors of the device and determining the second valuebased on the received data.

As described above, the power control module may determine the amount ofpower consumed by the device in a number of ways. Similarly, the powercontrol module may determine the second value indicative of the amountof power consumed by the device in the same ways.

In some implementations, the power control module determines the secondvalue by accessing power consumption data stored on the deviceindicative of expected power consumed by the device in variousconfigurations (e.g., by various power consuming functions or havingvarious sets of power consuming functions enabled or disabled). In someimplementations, the power control module determines the second valueusing data indicative of actual power consumption, rather than (or inaddition to) expected or designed power consumption. For example, insome implementations, the power control module determines the secondvalue based on data received from one or more sensors. In someimplementations, the power control module determines the second valuebased on a monitored value generated by one or more power consumptionmonitors. In some implementations, the power control module determinesthe amount of power consumed by the device based on information receivedover a network. For example, in some implementations, the power controlmodule receives information from a database of live, real-timeinformation on the status and history of devices in operation.

At block 330, the power control module determines a difference betweenthe first value and second value. In some implementations, thisdifference is indicative of an amount of power that is available to beconsumed by the device, but is not being consumed by the device. Atblock 335, the power control module determines whether to change thefunctionality of the device. In some implementations, the power controlmodule makes this determination based on the difference between thefirst value and the second value. For example, if the difference isabove a first threshold, the power control module may determine tochange the functionality of the device by enabling one or more powerconsuming functions and the method proceeds to block 340. If thedifference is below a second threshold, the power control module maydetermine to change the functionality of the device by disabling one ormore power consuming functions and the method proceeds to block 350. Ifthe difference is between the first and second thresholds, the powercontrol module may determine not to change the functionality of thedevice and the method returns to block 320.

Attempting to draw more power than can be provided by a power source maycause failure of the device or degradation of performance of currentlyenabled power consuming functions. In some implementations, if a deviceattempts to draw more power than can be provided by a power source, thepower source may cease to provide any power, resulting in failure of thedevice. In some implementations, if a device attempts to draw more powerthan can be provided, a brownout or overcurrent condition may occur thatmay result in failure of the device, damage to the device or theswitching hub, or degradation of performance of the device.

In determining to change the functionality of the device by disablingone or more power consuming functions, the power control module avoidsattempting to draw more power to the device than can be provided. Indetermining to change the functionality of the device by enabling one ormore power consuming functions, the power control module intelligentlyreduces the safety margin between the power available and power consumedwithout attempting to draw more power to the device than can be providedwhile still enabling the device to reach otherwise unobtainableperformance levels for a given device.

At block 340, the power control module selects one or more powerconsuming functions of the device to enable. The power control modulemay select the power consuming functions to enable in a number of ways.In some implementations, the power consuming functions is selected basedon an estimated power consumption of the power consuming functions,based on information received over a network indicating priority of thepower consuming functions, based on stored user preferences indicatingpriority of the power consuming functions, or any other information. Anexample method of selecting a power consuming function is described indetail below with respect to FIG. 5.

At block 345, the power control module enables the selected powerconsuming functions. In some implementations, enabling the selectedpower consuming functions includes activating (e.g., powering) hardwareof the device associated with at least one of the power consumingfunctions. In some implementations, enabling the selected powerconsuming functions includes executing code (e.g., with a processor ofthe device) associated with at least one of the power consumingfunctions. In some implementations, enabling the selected powerconsuming functions comprises increasing or decreasing a hardware orsoftware parameter. In some implementations, the power control moduleenable the selected power consuming functions by transmitting a signal(e.g., to a processor) to enable the power consuming functions.

At block 350, the power control module selects one or more powerconsuming functions of the device to disable. As in block 340, the powercontrol module may select the power consuming functions to disable in anumber of ways. In some implementations, the power consuming functionsare selected based on an estimated power consumption of the powerconsuming functions, based on information received over a networkindicating priority of the power consuming functions, based on storeduser preferences indicating priority of the power consuming functions,or any other information. An example method of selecting a powerconsuming function is described in detail below with respect to FIG. 5.

At block 355, the power control module disables the selected powerconsuming functions. In some implementations, disabling the selectedpower consuming functions includes deactivating (e.g., depowering)hardware of the device associated with at least one of the powerconsuming functions. In some implementations, disabling the selectedpower consuming functions includes ceasing to execute code (e.g., with aprocessor of the device) associated with at least one of the powerconsuming functions. In some implementations, disabling the selectedpower consuming functions includes increasing or decreasing a hardwareor software parameter. In some implementations, the power control modulemay disable the selected power consuming functions by transmitting asignal (e.g., to a processor) to disable the power consuming functions.

After blocks 345 and 355 (and in response to determining in block 355not to change the functionality of the device), the method 300 returnsto block 320 where the power control module determines an updated secondvalue indicative of power consumed by the device (with one or more powerconsuming functions possibly enabled or disabled). The method 300 mayproceed again with the power control module selecting one or moreadditional power consuming functions to be enabled (in block 340) orselecting one or more power consuming functions to be disabled (in block350). The selected one or more power consuming functions to be disabledmay include at least one of the power consuming functions previouslyenabled by an earlier iteration through the method 300. The method 300may include enabling (in block 345) or disabling (in block 355) theupdate-selected power consuming function.

The method 300 returns, once again, to block 320, such that the powercontrol module continuously monitors and controls the amount of powerconsumed by the device and repeatedly enables or disables powerconsuming functions.

FIG. 4 is a flowchart representation of a method 400 of managing powerconsumption of a device in accordance with some implementations. In someimplementations, the method 400 is performed by a power control moduleof a device, such as the power control module 240 of FIG. 2A. In someimplementations, the method 400 is performed by processing logic,including a suitable combination of hardware, firmware, and software. Insome implementations, the method 400 is performed by a processorexecuting encoded instructions stored in a non-transitorycomputer-readable medium (e.g., a memory). Briefly, the method 400includes obtaining values indicative of power available to a device andpower consumed by the device during operation, and selecting one or morepower consuming functions of the device based on the determined valuesin order to manage power consumption of the device.

The method 400 begins, at block 410, with the power control moduleobtaining a first value indicative of an amount of power (e.g., a powerlevel) available to a device from a power source. At block 420, thepower control module obtains a second value indicative of an amount ofpower consumed by the device. Blocks 410 and 420 may be performed asdescribed above with respect to block 310 and 320 of FIG. 3. Althoughblocks 410 and 420 are described sequentially, it is appreciated thatthey may be performed sequentially in any order, simultaneously, oroverlapping in time.

At block 430, the power control module selects one or more powerconsuming functions of the device based on the first value and thesecond value. In some implementations, the power control module selectsthe power consuming functions based on a difference between the firstvalue and the second value. In some implementations, the power controlmodule selects the power consuming functions based on the first valueand the second value without determining a difference between the twovalues.

In some implementations, the power consuming functions are selectedbased on an estimated power consumption of the power consumingfunctions, based on information received over a network indicatingpriority of the power consuming functions, based on user preferencesindicating priority of the power consuming functions, or any otherinformation. An example method of selecting a power consuming functionis described in detail below with respect to FIG. 5.

The method 400 may include enabling and/or disabling the selected one ormore power consuming functions. Enabling the power consuming functionsmay be performed as described above with respect to block 345 of FIG. 3.Disabling the power consuming functions may be performed as describedabove with respect to block 355 of FIG. 3.

FIG. 5 is a flowchart representation of a method 500 of selecting powerconsuming functions to enable or disable in accordance with someimplementations. In some implementations, the method 500 is performed bya power control module of a device, such as the power control module 240of FIG. 2A. In some implementations, the method 500 is performed byprocessing logic, including a suitable combination of hardware,firmware, and software. In some implementations, the method 500 isperformed by a processor executing encoded instructions stored in anon-transitory computer-readable medium (e.g., a memory). Briefly, themethod 500 includes determining a power consumption value for a numberof power consuming functions, ranking the power consuming functions, andselecting one or more of power consuming functions based on the ranking.

The method 500 begins, at block 510, with the power control moduledetermining a power consumption value for each of a plurality of powerconsuming functions. In some implementations, the power consumptionvalue may be indicative of an amount of power consumed by the powerconsuming function. In some implementations, the power consumption valuemay be indicative of a difference between a first amount of powerconsumed by the device with the power consuming function enabled and asecond amount of power consumed by the device with the power consumingfunction not enabled.

The power consumption value for each of the plurality of power consumingfunctions may be determined in a number of ways. In someimplementations, the power consumption value is based on powerconsumption data stored in the device (e.g., power consumption data 241of FIG. 2A). In some implementations, the power consumption dataincludes a table that associates each of the plurality of powerconsuming function with a power consumption value. In someimplementations, the power consumption values are determined in much thesame way as the amount of power consumed by the device as describedabove, but specific to particular power consuming functions. Forexample, in some implementations, the power consumption values are basedon sensor data or information received over a network.

In some implementations, in order to select one or more power consumingfunctions to disable, the power consumption values are based on data ofactual power consumption of the power consuming functions in operation.In some implementations, in order to select one or more power consumingfunctions to enable, the power consumption values are based on data ofexpected power consumption of the power consuming functions.

At block 520, the power control module ranks the plurality of powerconsuming functions. In some implementations, the power control moduleranks the plurality of power consuming functions by providing a rankingvalue to each of the plurality of power consuming functions indicativeof a desirability to enable (or not disable) the power consumingfunction. In some implementations, the ranking values are stored in afixed table that associates each power consuming function with a rankingvalue. In some implementations, the ranking values may be dynamicallygenerated by the power control module based on received information. Forexample, in some implementations, the ranking values are based on userpreferences received by the power control module indicating desirabilityof particular power consuming functions (e.g., a predefined tolerablelatency, a jitter limit, a suitable download rate, a suitable uploaddownload rate, and/or another quality of service metric).

In some implementations, the ranking values are based on sensor data ordata received over a network. For example, the data over the network mayindicate nearby client device hardware and/or software limitationsresulting in a higher ranking for range over throughput or resulting inelimination of support for a specific band or channel. As anotherexample, the data over the network may indicate that client devicedensity has or is predicted to increase, shifting rankings in favor ormore CPU/memory power consumption over radio power consumption. In someimplementations, the data received over the network may include anindication of one or more power consuming functions that are to beenabled, if possible. For example, the data received over the networkmay indicate that a scanning radio should be enabled to detectinterference in the environment.

In some implementations, the ranking values are based on the determinedpower consumption values. For example, if the power consumption valuefor a particular power consuming function is low, the power controlmodule may assign a higher ranking value to the power consuming functionas the desirability of the power consuming function may be increased byhaving low power consumption.

At block 530, the power control module selects one or more of theplurality of power consuming functions based on the ranking. In someimplementations, the power control module also selects the powerconsuming functions based on the determined power consumption values. Insome implementations, the sum of the power consumption values of theselected one or more power consuming functions is less than a differencebetween a first value indicative of an amount of available power and asecond value indicative of amount of power consumed. As an example,based on a first value indicating that the device has 14.3 W of poweravailable and a second value indicative that the device is consuming12.1 W, the power control module may determine that 1.2 W (i.e., 14.3 Wminus 12.1 W) worth of power consuming functions are to be enabled. Insome implementations, the power control module selects the highestranked power consuming function having a power consumption value lessthan 1.2 W. If this leaves additional power to be used, in someimplementations, the power control module additionally selects thehighest ranked remaining power consuming function having a powerconsumption value less than the remaining additional power. As anotherexample, the power control module may determine that 0.5 W worth ofpower consuming functions are to be disabled. In some implementations,the power control module selects the lowest ranking power consumingfunction having a power consumption value greater than 0.5 W. In someimplementations, the power control module repeatedly selects the lowestranking power consuming function until the sum of their powerconsumption values is greater than 0.5 W.

In some implementations, the sum of the power consumption values of theselected one or more power consuming functions is less than a differencebetween a first value indicative of an amount of available power and asecond value indicative of amount of power consumed, with the differencereduced by a power safety margin. For example, the first value mayindicate that the device has 14.3 W of power available and the secondvalue indicative that the device is consuming 12.1 W. Rather thandetermining that 1.2 W worth of power consuming functions are to beenabled, the power control module may determine that only 1.0 W worth ofpower consuming functions are to be enabled based on a power safetymargin of 0.2 W.

FIG. 6 is a flowchart representation of a method 600 of determining apower budget in accordance with some implementations. In someimplementations, the method 600 is performed by a power control moduleof a device such as the power control module 240 of FIG. 2A. In someimplementations, the method 600 is performed by processing logic,including a suitable combination of hardware, firmware, and software. Insome implementations, the method 600 is performed by a processorexecuting encoded instructions stored in a non-transitorycomputer-readable medium (e.g., a memory). Briefly, the method 600includes determining a power loss value for a cable, and determining apower budget value based on the power loss value.

The method 600 begins, at block 610, with the power control module or acomponent thereof (e.g., the cable diagnostic sub-module 245 in FIG. 2A)obtaining a power loss value for a cable that couples a device to apower source, where the power loss value is indicative of an amount ofpower lost through the cable during power transmission from the powersource to the device. In some implementations, obtaining the power lossvalue comprises determining one or more characteristics of the cable byperforming a diagnostic test on the cable (e.g., IEEE 802.3az), wherethe power loss value for the cable is a function of the one or morecharacteristics of the cable.

In some implementations, the power source delivers power to the devicevia an Ethernet cable. The IEEE 802.3az cable diagnostic standard isused to determine one or more characteristics of the cable. In someimplementations, the one or more characteristics of the cable include,without limitation, a length of the cable, a resistance value of thecable, an insertion loss value of the cable, and a return loss value ofthe cable. In some implementations, a voltage pulse is sent by thedevice to determine the one or more characteristics of the cableaccording to IEEE 802.3az. For example, the length of the cable isdetermined by measuring the roundtrip time of the voltage pulse based onthe velocity of a wave relative to the material of the cable (e.g.,copper). For example, the category of the cable (e.g., Category 3, 5,5e, 6, 7, etc.) is a function of the insertion loss and a return lossvalues of the cable. In turn, the resistance per meter of the cable isdetermined using a look-up-table that correlates cable categories withthe typical resistance per meter for a respective cable category.Finally, the power loss value of the cable is a function of theresistance per meter and the length.

At block 620, the power control module determines, based at least inpart on the power loss value for the cable, a power budget valueindicative of an amount of power received by the device from the powersource. In some implementations, the power budget value (sometimes alsoreferred to herein as the “first value”) is an analog value. In otherimplementations, the power budget value is a discrete value (one of aplurality of possible values), such as ‘0’ if the amount of poweravailable is a low amount and ‘1’ if the amount of power is a highamount.

In some implementations, determining the power budget value includesadjusting a first power budget value, based at least in part on thepower loss value, to a second power budget value. In someimplementations, the difference between the second power budget valueand the first power budget value is a function of the difference betweenan expected power loss value for the cable and the determined power lossvalue. For example, according to the IEEE 802.3af standard, the devicemay expect to receive 12.95 W of power via an Ethernet cable even thoughthe power source output 15.4 W due to the worst-case scenario where theEthernet cable is long (e.g., 100 m) and of low quality (e.g., Category3). Continuing with this example, the expected power loss value for theEthernet cable is 2.45 W. In reality, the device may be able to drawmore power via the Ethernet cable, when the determined power loss valuefor the cable is less than the expected power loss value, particularlyif the Ethernet cable is short or of high quality (e.g., Category 5 orabove). For example, the device may be able to draw up to 13.87 W from aCategory 5 cable, a 7.1% increase in the amount of power drawn ascompared to 12.95 W.

In some implementations, the power control module obtains an indicationof the first power budget value from the power source. For example, insome implementations, the indication is a signal that encodes the firstpower budget value indicative of an amount of power (e.g., in watts)available to the device, and the power control module determines thesecond power budget value based on the received first power budget valueand the power loss value for the cable that couples the device to thepower source. For example, the first power budget value may be thereceived first power budget value or the received first power budgetvalue less a safety margin.

In some implementations, the power control module obtains a signal fromthe power source indicative of a power standard of the device. Forexample, in some implementations, the power control module receives asignal encoding a flag indicating that IEEE 802.3af or IEEE 802.3at isbeing used. As an example, the power control module may determine thefirst power budget value as 12.95 W if the flag indicates that IEEE802.3af is being used.

In some implementations, the power control module reads the first powerbudget value from memory that is local to or remote from the device(e.g., a register of the power source). In some implementations, thepower control module reads the power standard of the device from memorythat is local to or remote from the device (e.g., a register of thepower source). For example, in some implementations, the power controlmodule reads a flag indicating that IEEE 802.3af or IEEE 802.3at isemployed by the device. As an example, the power control module maydetermine the first power budget value as 12.95 W if the flag indicatesthat IEEE 802.3af is employed by the device. For example, the firstpower budget value or the power standard is programmed into the device'sfirmware or is stored in a look-up table by the manufacturer.

In some implementations, after block 620, the method 600 continues withthe power control module identifying a first set of currently operatingpower consuming functions of the device and determining, based at leastin part on the first set of power consuming functions, a cumulativepower consumption value (sometimes also referred to herein as the“second value”) indicative of an amount of power utilized by the firstset of power consuming functions of the device. Determining thecumulative power consumption value may be performed as described abovewith respect to the second value of block 320 of FIG. 3. The powercontrol modules selects, based at least in part on the power budgetvalue and the cumulative power consumption value, a second set of powerconsuming functions and effects the second set of power consumingfunctions, including at least one of: enabling a new power consumingfunction not included in the first set of power consuming functions,disabling a respective one of the first set of power consumingfunctions, increasing a power allocation for a respective powerconsuming function of the first set of power consuming functions, ordecreasing power allocation for a respective power consuming function ofthe first set of power consuming functions.

In some implementations, after effecting the second set of powerconsuming functions as described above, the method 600 continues withthe power control module determining an updated total power consumptionvalue indicative of an amount of power consumed by the device. Themethod 600 continues with the power control selecting, based at least inpart on the second power budget value and the updated total powerconsumption value, one or more power consuming functions of the device.In some implementations, the one or more selected functions may be thesame power consuming functions selected above and/or new power consumingfunctions. In some implementations, the power control module disablesthe one or more selected power consuming functions in response todetermining that the updated total power consumption value is greaterthan the power budget value. In some implementations, the power controlmodule enables the one or more selected power consuming functions inresponse to determining that the updated total power consumption valueis less than the power budget value.

In some implementations, after block 620, the method 600 continues withthe power control module determining a total power consumption value(sometimes also referred to herein as the “second value”) indicative ofan amount of power consumed by the device and selecting, based at leastin part on the power budget value and the total power consumption value,one or more power consuming functions of the device. The power controlmodule enables and/or disables the one or more selected power consumingfunctions of the device. Determining the total power consumption valuemay be performed as described above with respect the second value ofblock 320 of FIG. 3. Selecting the one or more power consuming functionsmay be performed as described above with respect block 420 of FIG. 4. Anexample method of selecting one or more power consuming functions isdescribed in detail below with respect to FIG. 5. Enabling the powerconsuming functions may be performed as described above with respect toblock 345 of FIG. 3. Disabling the power consuming functions may beperformed as described above with respect to block 355 of FIG. 3.

In some implementations, enabling and/or disabling the one or moreselected power consuming functions as described above, the method 600continues with the power control module determining an updated totalpower consumption value indicative of an amount of power consumed by thedevice. The method 600 continues with the power control selecting, basedat least in part on the second power budget value and the updated totalpower consumption value, one or more power consuming functions of thedevice. In some implementations, the one or more selected functions maybe the same power consuming functions selected above and/or new powerconsuming functions. In some implementations, the power control moduledisables the one or more selected power consuming functions in responseto determining that the updated total power consumption value is greaterthan the power budget value. In some implementations, the power controlmodule enables the one or more selected power consuming functions inresponse to determining that the updated total power consumption valueis less than the power budget value.

FIG. 7 is a flowchart representation of a method 700 of determining apower budget in accordance with some implementations. In someimplementations, the method 700 is performed by a power supply module ofa power source such as the power supply module 290 in FIG. 2B. In someimplementations, the method 700 is performed by processing logic,including a suitable combination of hardware, firmware, and software. Insome implementations, the method 700 is performed by a processorexecuting encoded instructions stored in a non-transitorycomputer-readable medium (e.g., a memory). Briefly, the method 700includes determining a power loss value for a cable, and determining apower budget based on the power loss value.

The method 700 begins, at block 710, with the power supply module or acomponent thereof (e.g., the cable diagnostic sub-module 294 in FIG. 2B)obtaining a power loss value for a cable that couples a power source toa device, where the power loss value is indicative of an amount of powerlost through the cable during power transmission from the power sourceto the device. Obtaining the power loss value for the cable that couplesthe power source to the device may be performed as described above withrespect to block 610 of FIG. 6.

At block 720, the power supply module determines, based at least in parton the power loss value for the cable, a power budget value indicativeof an amount of power delivered to the device by the power source. Insome implementations, the power budget value (sometimes also referred toherein as the “first value”) is an analog value. In otherimplementations, the power budget value is a discrete value (one of aplurality of possible values), such as ‘0’ if the amount of poweravailable is a low amount and ‘1’ if the amount of power is a highamount.

In some implementations, the power supply module or a component thereof(e.g., the power standard sub-module 292 in FIG. 2B) determines a powerstandard by which the device is able to source power (e.g., IEEE802.3af, IEEE 802.3at, or IEEE 802.3bt). In some implementations, thepower supply module determines a first power budget value based on thepower standard (e.g., 12.95 W for IEEE 802.3af) and adjusts the firstpower budget value to a second power budget value based on the powerloss value. In some implementations, the difference between the secondpower budget value and the first power budget value is a function of thedifference between an expected power loss value for the cable and thedetermined power loss value. For example, according to the IEEE 802.3afstandard, the device may expect to receive 12.95 W of power via anEthernet cable even though the power source output 15.4 W due to theworst-case scenario where the Ethernet cable is long (e.g., 100 m) andof low quality (e.g., Category 3). Continuing with this example, theexpected power loss for the Ethernet cable is 2.45 W. In reality, thedevice may be able to draw more power via the Ethernet cable, if thedetermined power loss value for the cable is less than the expectedpower loss value, particularly if the Ethernet cable is short or of highquality (e.g., Category 5 or above).

At block 730, the power supply module provides an indication of thepower budget value to the device. In some implementations, theindication is a signal that encodes one or more of a power budget valueindicative of an amount of power (e.g., in watts) available to therespective device, the power standard of the device, and the power lossvalue of the cable that couples the device to the power source.

FIG. 8 is a block diagram of a power control module 840 in accordancewith some implementations. FIG. 8 illustrates various inputs that may beprovided to the power control module 840 and various logic componentsthereof and an output that may be provided by the power control module840. The power control module 840 (and the various submodules thereof)may be implemented via hardware, software, firmware, or a combinationthereof.

The power control module 840 includes power budget logic 842 that isconfigured to obtain a first value indicative of an amount of poweravailable to a device from a power source. In some implementations, thepower budget logic 842 obtains the first value based on a received powersignal 801 indicative of an amount of power available to the device. Insome implementations, the power signal 801 encodes a value indicative ofan amount of power available to the device (e.g., in watts). In someimplementations, the power signal 801 encodes a flag indicative of apower standard (e.g., IEEE 802.3af or IEEE 802.3at) employed by thepower source in delivering power to the device. The power budget logic842 may perform block 410 as described above with respect to FIG. 4.

In some implementations, the power budget logic 842 is configured todetermine, based at least in part on a power loss value for a cable, apower budget value (i.e., the first value) indicative of an amount ofpower received by the device from the power source. The power budgetlogic 842 may perform block 610, as described above with respect to FIG.6, to obtain the power loss value. Furthermore, the power budget logic842 may also perform block 620, as described above with respect to FIG.6, to determine the power budget value (i.e., the first value indicativeof the amount of power available to the device from the power source).

The power control module 840 includes power consumption logic 844 thatis configured to obtain a second value indicative of an amount of powerconsumed by the device. In some implementations, the power consumptionlogic 844 determines the second value based on a received signal from asensor including sensor data 802. In some implementations, the powerconsumption logic 844 determines the second value based on a receivedsignal over a network including network data 803. For example, in someimplementations, the sensor data 802 includes data from one or morepower consumption monitors. As another example, in some implementations,the network data 803 includes information from a database of live,real-time information on the status and history of devices in operation.The power consumption logic 844 may perform block 420 as described abovewith respect to FIG. 4.

The power control module 840 includes select logic 846 that isconfigured to select one or more power consuming functions of the devicebased on the first value and the second value. In some implementations,the select logic 846 determines power consumption values for each of aplurality of power consuming functions using the sensor data 802,network data 803, and/or information in a power consumption table 847associating each of the plurality of power consuming functions with apower consumption value. In some implementations, the select logic 846ranks the plurality of power consuming functions and selects one or moreof the power consuming functions based on the ranking. The select logic846 may perform block 430 as described above with respect to FIG. 4and/or method 500 as described above with respect to FIG. 5.

The power control module 840 includes signal logic 848 that isconfigured to transmit an enable/disable signal 890 to enable or disablethe selected one or more power consuming functions. The signal logic 848may perform block 345 or 355 as described above with respect to FIG. 3.

FIG. 9 is a block diagram of a computing device 900 in accordance withsome implementations. For example, in some implementations, thecomputing device 900 is a representation of a respective one of the oneor more devices 221-1, . . . , 221-N in FIG. 2B. While certain specificfeatures are illustrated, those skilled in the art will appreciate fromthe present disclosure that various other features have not beenillustrated for the sake of brevity, and so as not to obscure morepertinent aspects of the implementations disclosed herein. To that end,as a non-limiting example, in some implementations the computing device900 includes one or more processing units (CPU's) 902 (e.g.,processors), one or more output interfaces 903, a memory 906, aprogramming interface 908, and one or more communication buses 904 forinterconnecting these and various other components.

In some implementations, the communication buses 904 include circuitrythat interconnects and controls communications between systemcomponents. The memory 906 includes high-speed random access memory,such as DRAM, SRAM, DDR RAM or other random access solid state memorydevices; and may include non-volatile memory, such as one or moremagnetic disk storage devices, optical disk storage devices, flashmemory devices, or other non-volatile solid state storage devices. Thememory 906 optionally includes one or more storage devices remotelylocated from the CPU(s) 902. The memory 906 comprises a non-transitorycomputer readable storage medium. Moreover, in some implementations, thememory 906 or the non-transitory computer readable storage medium of thememory 906 stores the following programs, modules and data structures,or a subset thereof including an optional operating system 930 and apower control module 940. In some embodiment, one or more instructionsare included in a combination of logic and non-transitory memory. Theoperating system 930 includes procedures for handling various basicsystem services and for performing hardware dependent tasks. In someimplementations, the power control module 940 is configured toselectively enable and disable power consuming functions of a device(which may include the computing device 900 or be separate from thecomputing device 900) based on information indicative of power availableto the device and power consumed by the device. To that end, the powercontrol module 940 includes a power available module 941, a powerconsumed module 942, a function selection module 943, a functionenable/disable module 944, and a cable diagnostic module 945.

In some implementations, the power available module 941 is configured toobtain a first value indicative of power available to the device from apower source. To that end, the power available module 941 includes a setof instructions 941 a and heuristics and metadata 941 b. In someimplementations, the power consumed module 942 is configured to obtain asecond value indicative of power consumed by the device. To that end,the power consumed module 942 includes a set of instructions 942 a andheuristics and metadata 942 b. In some implementations, the functionselection module 943 is configured to select one or more power consumingfunctions of the device based on the first value and second value inorder to manage power consumption of the device. In someimplementations, the function selection module 943 selects the powerconsuming functions based on a difference between the first value andthe second value. To that end, the function selection module 943includes a set of instructions 943 a and heuristics and metadata 943 b.In some implementations, the function enable/disable module 944 isconfigured to enable or disable the selected functions. To that end, thefunction enable/disable module 944 includes a set of instructions 944 aand heuristics and metadata 944 b.

In some implementations, the cable diagnostic module 945 is configuredto obtain a power loss value for a cable that couples the device to thepower source, where the power loss value is indicative of an amount ofpower lost through the cable during power transmission from the powersource to the device. To that end, the cable diagnostic module 945includes a set of instructions 945 a and heuristics and metadata 945 b.In some implementations, the power available module 941 is configured todetermine, based on the power loss value obtained by the cablediagnostic module 945, a power budget value indicative of an amount ofpower received by the device from the power source.

Although the power control module 940, the power available module 941,the power consumed module 942, the function selection module 943, thefunction enable/disable module 944, and the cable diagnostic module 945are illustrated as residing on a single computing device 900, it shouldbe understood that in other implementations, any combination of thepower control module 940, the power available module 941, the powerconsumed module 942, the function selection module 943, the functionenable/disable module 944, and the cable diagnostic module 945 mayreside in separate computing devices. For example, each of the powercontrol module 940, the power available module 941, the power consumedmodule 942, the function selection module 943, the functionenable/disable module 944, and the cable diagnostic module 945 mayreside on a separate computing device.

Moreover, FIG. 9 is intended more as functional description of thevarious features which may be present in a particular embodiment asopposed to a structural schematic of the implementations describedherein. As recognized by those of ordinary skill in the art, items shownseparately could be combined and some items could be separated. Forexample, some functional modules shown separately in FIG. 9 could beimplemented in a single module and the various functions of singlefunctional blocks could be implemented by one or more functional blocksin various implementations. The actual number of modules and thedivision of particular functions and how features are allocated amongthem will vary from one embodiment to another, and may depend in part onthe particular combination of hardware, software and/or firmware chosenfor a particular embodiment.

FIG. 10 is a block diagram of a computing device 1000 in accordance withsome implementations. For example, in some implementations, thecomputing device 1000 is a representation of the power source 211 inFIG. 2B. While certain specific features are illustrated, those skilledin the art will appreciate from the present disclosure that variousother features have not been illustrated for the sake of brevity, and soas not to obscure more pertinent aspects of the implementationsdisclosed herein. To that end, as a non-limiting example, in someimplementations the computing device 1000 includes one or moreprocessing units (CPU's) 1002 (e.g., processors), one or more outputinterfaces 1003, a memory 1006, a programming interface 1008, and one ormore communication buses 1004 for interconnecting these and variousother components.

In some implementations, the communication buses 1004 include circuitrythat interconnects and controls communications between systemcomponents. The memory 1006 includes high-speed random access memory,such as DRAM, SRAM, DDR RAM or other random access solid state memorydevices; and may include non-volatile memory, such as one or moremagnetic disk storage devices, optical disk storage devices, flashmemory devices, or other non-volatile solid state storage devices. Thememory 1006 optionally includes one or more storage devices remotelylocated from the CPU(s) 1002. The memory 1006 comprises a non-transitorycomputer readable storage medium. Moreover, in some implementations, thememory 1006 or the non-transitory computer readable storage medium ofthe memory 1006 stores the following programs, modules and datastructures, or a subset thereof including an optional operating system1030, a power supply module 1040, and, optionally, a networking module1045. In some embodiment, one or more instructions are included in acombination of logic and non-transitory memory. The operating system1030 includes procedures for handling various basic system services andfor performing hardware dependent tasks.

In some implementations, the power supply module 1040 is configured tocontrol the delivery of power to one or more devices (e.g., thecomputing device 900 in FIG. 9) coupled to the computing device 1000. Tothat end, the power supply module 1040 includes a power standard module1041, a cable diagnostic module 1042, and a communication module 1043.

In some implementations, the power standard module 1041 is configured todetermine a power standard by which a respective device (e.g., thecomputing device 900 in FIG. 9) is able to source power via atransmission medium (e.g., an Ethernet cable). To that end, the powerstandard module 1041 includes a set of instructions 1041 a andheuristics and metadata 1041 b. In some implementations, the cablediagnostic module 1042 is configured to determine a power loss value fora cable that couples the computing device 1000 to the respective device(e.g., the computing device 900 in FIG. 9) by performing a diagnostictest on the cable (e.g., using IEEE 802.3az). To that end, the cablediagnostic module 1042 includes a set of instructions 1042 a andheuristics and metadata 1042 b. In some implementations, thecommunication module 1043 is configured to send a signal indicative ofpower available from the computing device 1000 to the respective device(e.g., the computing device 900 in FIG. 9). To that end, thecommunication module 1043 includes a set of instructions 1043 a andheuristics and metadata 1043 b.

In some implementations, the networking module 1045 is configured toroute packet traffic to and from the respective device (e.g., thecomputing device 900 in FIG. 9). To that end, the networking module 1045includes a set of instructions 1045 a and heuristics and metadata 1045b.

Although the power supply module 1040, the power standard module 1041,the cable diagnostic module 1042, the communication module 1043, and thenetworking module 1045 are illustrated as residing on a single computingdevice 1000, it should be understood that in other implementations, anycombination of the power supply module 1040, the power standard module1041, the cable diagnostic module 1042, the communication module 1043,and the networking module 1045 may reside in separate computing devices.For example, each of the power supply module 1040, the power standardmodule 1041, the cable diagnostic module 1042, the communication module1043, and the networking module 1045 may reside on a separate computingdevice.

Moreover, FIG. 10 is intended more as functional description of thevarious features which may be present in a particular embodiment asopposed to a structural schematic of the implementations describedherein. As recognized by those of ordinary skill in the art, items shownseparately could be combined and some items could be separated. Forexample, some functional modules shown separately in FIG. 10 could beimplemented in a single module and the various functions of singlefunctional blocks could be implemented by one or more functional blocksin various implementations. The actual number of modules and thedivision of particular functions and how features are allocated amongthem will vary from one embodiment to another, and may depend in part onthe particular combination of hardware, software and/or firmware chosenfor a particular embodiment.

While various aspects of implementations within the scope of theappended claims are described above, it should be apparent that thevarious features of implementations described above may be embodied in awide variety of forms and that any specific structure and/or functiondescribed above is merely illustrative. Based on the present disclosureone skilled in the art should appreciate that an aspect described hereinmay be implemented independently of any other aspects and that two ormore of these aspects may be combined in various ways. For example, anapparatus may be implemented and/or a method may be practiced using anynumber of the aspects set forth herein. In addition, such an apparatusmay be implemented and/or such a method may be practiced using otherstructure and/or functionality in addition to or other than one or moreof the aspects set forth herein.

It will also be understood that, although the terms “first,” “second,”etc. may be used herein to describe various elements, these elementsshould not be limited by these terms. These terms are only used todistinguish one element from another. For example, a first contact couldbe termed a second contact, and, similarly, a second contact could betermed a first contact, which changing the meaning of the description,so long as all occurrences of the “first contact” are renamedconsistently and all occurrences of the second contact are renamedconsistently. The first contact and the second contact are bothcontacts, but they are not the same contact.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the claims. Asused in the description of the embodiments and the appended claims, thesingular forms “a,” “an,” and “the” are intended to include the pluralforms as well, unless the context clearly indicates otherwise. It willalso be understood that the term “and/or” as used herein refers to andencompasses any and all possible combinations of one or more of theassociated listed items. It will be further understood that the terms“comprises” and/or “comprising,” when used in this specification,specify the presence of stated features, integers, steps, operations,elements, and/or components, but do not preclude the presence oraddition of one or more other features, integers, steps, operations,elements, components, and/or groups thereof.

As used herein, the term “if” may be construed to mean “when” or “upon”or “in response to determining” or “in accordance with a determination”or “in response to detecting,” that a stated condition precedent istrue, depending on the context. Similarly, the phrase “if it isdetermined [that a stated condition precedent is true]” or “if [a statedcondition precedent is true]” or “when [a stated condition precedent istrue]” may be construed to mean “upon determining” or “in response todetermining” or “in accordance with a determination” or “upon detecting”or “in response to detecting” that the stated condition precedent istrue, depending on the context.

What is claimed is:
 1. A method comprising: determining a power lossvalue indicative of an amount of power lost through a cable during powertransmission from a power source to a power receiving device;determining, based at least in part on the power loss value, a powerbudget value indicative of an amount of power received by the powerreceiving device from the power source; determining a total powerconsumption value indicative of an amount of power consumed by the powerreceiving device within a time period the power receiving deviceperforms a first set of power consuming functions; determining anupdated total power consumption value indicative of an amount of powerconsumed by the power receiving device based on at least one ofdisabling or activating one or more power consuming functions; disablingthe one or more power consuming function in response to determining thatthe updated total power consumption value is greater than the powerbudget value; and activating the one or more power consuming functionsin response to determining that the updated total power consumptionvalue is less than the power budget value.
 2. The method of claim 1,wherein determining the power budget value includes adjusting a firstpower budget value, based at least in part on the power loss value, to asecond power budget value.
 3. The method of claim 2, further comprising:receiving a signal from the power source indicative of a power standardof the power receiving device; and determining the first power budgetvalue based at least in part on the power standard.
 4. The method ofclaim 2, further comprising: receiving a signal from the power sourceindicative of the first power budget value.
 5. The method of claim 2,further comprising: obtaining from memory the first power budget value.6. The method of claim 2, further comprising: obtaining from memory apower standard of the power receiving device; and determining the firstpower budget value based at least in part on the power standard.
 7. Themethod of claim 1, wherein the cable is at least one of an ethernetcable, a universal serial bus cable, or a firewire cable.
 8. The methodof claim 1, wherein obtaining the power loss value includes: determiningone or more characteristics of the cable by performing a diagnostic teston the cable; and wherein the power loss value for the cable is afunction of the one or more characteristics of the cable.
 9. The methodof claim 8, wherein the one or more characteristics include at least oneof: a length of the cable; a resistance of the cable; an insertion lossvalue of the cable; or a return loss value of the cable.
 10. The methodof claim 1, wherein obtaining the power loss value for the cableincludes receiving a signal from the power source indicative of thepower loss value for the cable.
 11. The method of claim 1, furthercomprising: increasing power allocation for one or more power consumingfunctions of the first set of power consuming functions.
 12. The methodof claim 1, further comprising: selecting, based at least in part on thepower budget value and the total power consumption value, the one ormore power consuming functions.
 13. The method of claim 12, whereinselecting the one or more power consuming functions includes:determining a respective power consumption value for each of a pluralityof power consuming functions; ranking the plurality of power consumingfunctions; and selecting, based on the ranking, the one or more powerconsuming functions, wherein a sum of power consumption values of theone or more power consuming functions is less than a difference betweenthe power budget value and the total power consumption value.
 14. Themethod of claim 13, wherein ranking the plurality of power consumingfunctions is based on data received over a network.
 15. The method ofclaim 13, wherein ranking the plurality of power consuming functions isbased on satisfaction of a user experience metric.
 16. The method ofclaim 13, wherein ranking the plurality of power consuming functions isbased on at least one determined power consumption value for one of theplurality of power consuming functions.
 17. The method of claim 13,wherein a sum of power consumption values of the one or more powerconsuming functions is less than the difference between the power budgetvalue and the total power consumption value, reduced by a power safetymargin.
 18. The method of claim 1, further comprising: decreasing powerallocation for one or more power consuming functions of the first set ofpower consuming functions.
 19. A power receiving device comprising: aport configured to connect to a cable to receive power from a powersource; a power sensor configured to determine a power loss valueindicative of an amount of power lost through the cable during powertransmission from the power source to the power receiving device; and acontroller configured to: determine, based at least in part on the powerloss value, a power budget value indicative of an amount of powerreceived by the power receiving device from the power source; determinea total power consumption value indicative of an amount of powerconsumed by the power receiving device within a time period the powerreceiving device performs a first set of power consuming functions;determine an updated total power consumption value indicative of anamount of power consumed by the power receiving device based on at leastone of disabling or activating one or more power consuming functions;disabling the one or more power consuming function in response todetermining that the updated total power consumption value is greaterthan the power budget value; and activating the one or more powerconsuming functions in response to determining that the updated totalpower consumption value is less than the power budget value.
 20. Thepower receiving device of claim 19, wherein the controller is furtherconfigured to: increase power allocation for one or more power consumingfunctions of the first set of power consuming functions, or decreasepower allocation for one or more power consuming functions of the firstset of power consuming functions.